package concursos.daos;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.TypedQuery;

import concursos.modelos.Lembrete;

public class LembreteDAO {

	private EntityManager manager;

	public LembreteDAO(EntityManager manager) {
		this.manager = manager;
	}

	public void salvarLembrete(Lembrete lembrete) {
		if (lembrete.getId() == 0) {
			this.manager.persist(lembrete);
		} else {
			Lembrete temp = this.manager.find(Lembrete.class, lembrete.getId());
			temp.setTitulo(lembrete.getTitulo());
			temp.setInformacao(lembrete.getInformacao());
			this.manager.merge(lembrete);
		}
	}

	public void excluirLembrete(Lembrete lembrete) {
		this.manager.remove(manager.getReference(Lembrete.class,
				lembrete.getId()));
	}

	public Lembrete buscaPorId(int id) {
		Lembrete lembrete = this.manager.find(Lembrete.class, id);
		return lembrete;
	}

	public List<Lembrete> listarLembretes(int usuario) {
		TypedQuery<Lembrete> query = this.manager
				.createQuery(
						"select x from Lembrete x where x.concurso.usuario.id = :usuario",
						Lembrete.class);

		query.setParameter("usuario", usuario);

		return query.getResultList();
	}

	public List<Lembrete> lembretesEnviarEmail(String data) {
		TypedQuery<Lembrete> query = this.manager.createQuery(
				"select x from Lembrete x where x.dataLembrar = '" + data
						+ "' and enviarEmail = " + 1, Lembrete.class);

		return query.getResultList();
	}

	public List<Lembrete> buscarPorConcurso(int id) {
		TypedQuery<Lembrete> query = this.manager.createQuery(
				"select x from Lembrete x where x.concurso.id = :id",
				Lembrete.class);

		query.setParameter("id", id);

		return query.getResultList();
	}

	public int quantidadeLembretesDeHoje(int idUsuario, String data) {

		TypedQuery<Lembrete> query = this.manager.createQuery(
				"select x from Lembrete x where x.concurso.usuario.id = 1011"
						+ " and x.dataLembrar = '" + data + "'",
				Lembrete.class);

		return query.getResultList().size();
	}
}
